//package com.tcm.portal.web.controller;
//
//import cn.hutool.core.util.ObjectUtil;
//import com.base.core.utils.R;
//import com.tcm.order.domain.entity.PaymentDTO;
//import com.tcm.order.domain.enums.PayChannelEnum;
//import com.tcm.order.service.PaymentService;
//import com.tcm.pay.domain.dto.AggregatePayDTO;
//import com.tcm.pay.service.AggregatePayService;
//import com.tcm.pay.service.WxMiniAuthService;
//import com.tcm.ucenter.domain.entity.UserRecharge;
//import com.tcm.ucenter.service.UserRechargeService;
//import org.apache.dubbo.config.annotation.Reference;
//import org.springframework.web.bind.annotation.*;
//
//@RequestMapping("/pay")
//@RestController
//public class AggregatePayController {
//
//    @DubboReference(version = "0.0.1-alpha", check = false, timeout = 3000)
//    private AggregatePayService aggregatePayService;
//
//    @DubboReference(version = "0.0.1-alpha", check = false, timeout = 3000)
//    private WxMiniAuthService wxMiniAuthService;
//
//    @DubboReference(version = "0.0.1-alpha", check = false, timeout = 3000)
//    private PaymentService paymentService;
//
//    @DubboReference(version = "0.0.1-alpha", check = false, timeout = 3000)
//    private UserRechargeService userRechargeService;
//
//    @DubboReference(version = "0.0.1-alpha", check = false, timeout = 3000)
//    private UserConsultService userConsultService;
//
//    @DubboReference(version = "0.0.1-alpha", check = false, timeout = 3000)
//    private PraiseService praiseService;
//
//    /**
//     * 支付宝扫码支付
//     *
//     * @param userId
//     * @param orderId
//     * @return
//     * @throws Exception
//     */
//    @GetMapping("/aggregate/wechat-order")
//    public R alipay(@RequestParam("userId") Long userId, @RequestParam("orderId") Long orderId, @RequestParam("code") String code) throws Exception {
//
//        PaymentDTO payment = paymentService.createNewPaySn(orderId,userId);
//        if (ObjectUtil.isEmpty(payment)) {
//            return R.fail("没有可支付的订单");
//        }
//        if (payment.getStatus().equals(new Byte("1"))) {
//            return R.fail("订单已支付");
//        }
//        if (!payment.getPayChannel().equals(PayChannelEnum.WEPAY.getCode().toLowerCase())) {
//            return R.fail("支付方式不正确,请使用微信支付");
//        }
//        AggregatePayDTO aggregatePayDTO = new AggregatePayDTO();
//
//        String openId = wxMiniAuthService.authOpenId(code);
//        aggregatePayDTO.setUserId(openId);
//
//        aggregatePayDTO.setAdviceUrl("http://api.zetikeji.com/api/pay/aggregate/advice-order");//回调地址
//        aggregatePayDTO.setAmount(payment.getPayAmount().toString());
//        aggregatePayDTO.setSubject(payment.getSubject());
//        aggregatePayDTO.setDesc(payment.getSubject());
//        aggregatePayDTO.setMerchantOrderNo(payment.getPaySn());
//        aggregatePayDTO.setAmount("0.01");
//        return R.success(aggregatePayService.wxPay(aggregatePayDTO));
//    }
//
//    /**
//     * 微信支付 -- 充值单
//     *
//     * @param userId
//     * @param id
//     * @return
//     * @throws Exception
//     */
//    @GetMapping("/aggregate/wechat-recharge")
//    public R rechargeWechat(@RequestParam("userId") Long userId, @RequestParam("id") Long id, @RequestParam("code") String code) throws Exception {
//
//        UserRecharge userRecharge = userRechargeService.findByUserId(userId, id);
//        if (ObjectUtil.isEmpty(userRecharge)) {
//            return R.fail("没有可支付的订单");
//        }
//        if (userRecharge.getPaid().equals(new Byte("1"))) {
//            return R.fail("订单已支付");
//        }
//        if (!userRecharge.getRechargeType().equals(PayChannelEnum.WEPAY.getCode().toLowerCase())) {
//            return R.fail("支付方式不正确,请使用微信支付");
//        }
//        AggregatePayDTO aggregatePayDTO = new AggregatePayDTO();
//
//        String openId = wxMiniAuthService.authOpenId(code);
//        aggregatePayDTO.setUserId(openId);
//
//        aggregatePayDTO.setAdviceUrl("http://api.zetikeji.com/api/pay/aggregate/advice-recharge");//回调地址
//        aggregatePayDTO.setAmount(userRecharge.getPrice().toString());
//        aggregatePayDTO.setAmount(userRecharge.getPrice().toString());
//        aggregatePayDTO.setSubject("充值");
//        aggregatePayDTO.setDesc("充值");
//        aggregatePayDTO.setMerchantOrderNo(userRecharge.getId().toString());
//        return R.success(aggregatePayService.wxPay(aggregatePayDTO));
//    }
//
//    /**
//     * 微信支付 -- 咨询单
//     *
//     * @param userId
//     * @param id
//     * @return
//     * @throws Exception
//     */
//    @GetMapping("/aggregate/wechat-consult")
//    public R consultWechat(@RequestParam("userId") Long userId, @RequestParam("id") Long id, @RequestParam("code") String code) throws Exception {
//
//        UserConsult userConsult = userConsultService.findByUserId(userId, id);
//        if (ObjectUtil.isEmpty(userConsult)) {
//            return R.fail("没有可支付的订单");
//        }
//        if (userConsult.getPaid().equals(new Byte("1"))) {
//            return R.fail("订单已支付");
//        }
//        if (!userConsult.getPayChannel().equals(PayChannelEnum.WEPAY.getCode().toLowerCase())) {
//            return R.fail("支付方式不正确,请使用微信支付");
//        }
//        AggregatePayDTO aggregatePayDTO = new AggregatePayDTO();
//
//        String openId = wxMiniAuthService.authOpenId(code);
//        aggregatePayDTO.setUserId(openId);
//
//        aggregatePayDTO.setAdviceUrl("http://api.zetikeji.com/api/pay/aggregate/advice-consult");//回调地址
//        aggregatePayDTO.setAmount(userConsult.getPrice().toString());
//        aggregatePayDTO.setSubject("咨询服务");
//        aggregatePayDTO.setDesc("咨询服务");
//        aggregatePayDTO.setMerchantOrderNo(userConsult.getId().toString());
//        return R.success(aggregatePayService.wxPay(aggregatePayDTO));
//    }
//
//    /**
//     * 微信支付 -- 打赏
//     *
//     * @param userId
//     * @param id
//     * @return
//     * @throws Exception
//     */
//    @GetMapping("/aggregate/wechat-praise")
//    public R praiseAlipay(@RequestParam("userId") Long userId, @RequestParam("id") Long id, @RequestParam("code") String code) throws Exception {
//
//        Praise praise = praiseService.findByUserId(userId, id);
//        if (ObjectUtil.isEmpty(praise)) {
//            return R.fail("没有可支付的订单");
//        }
//        if (praise.getPaid().equals(new Byte("1"))) {
//            return R.fail("订单已支付");
//        }
//        if (!praise.getPayChannel().equals(PayChannelEnum.WEPAY.getCode().toLowerCase())) {
//            return R.fail("支付方式不正确,请使用支付宝支付");
//        }
//        AggregatePayDTO aggregatePayDTO = new AggregatePayDTO();
//
//        String openId = wxMiniAuthService.authOpenId(code);
//        aggregatePayDTO.setUserId(openId);
//
//        aggregatePayDTO.setAdviceUrl("http://api.zetikeji.com/api/pay/aggregate/advice-praise");//回调地址
//        aggregatePayDTO.setAmount(praise.getPrice().toString());
//        aggregatePayDTO.setSubject("医生打赏");
//        aggregatePayDTO.setDesc("医生打赏");
//        aggregatePayDTO.setMerchantOrderNo(praise.getId().toString());
//        return R.success(aggregatePayService.wxPay(aggregatePayDTO));
//    }
//
//
//    /**
//     * 云闪付支付 -- 充值单  -------------------未申请------------搁置-----------
//     *
//     * @param userId
//     * @param id
//     * @return
//     * @throws Exception
//     */
//    @GetMapping("/aggregate/union-recharge")
//    public R rechargeUnion(@RequestParam("userId") Long userId, @RequestParam("id") Long id) throws Exception {
//
//        UserRecharge userRecharge = userRechargeService.findByUserId(userId, id);
//        if (ObjectUtil.isEmpty(userRecharge)) {
//            return R.fail("没有可支付的订单");
//        }
//        if (userRecharge.getPaid().equals(new Byte("1"))) {
//            return R.fail("订单已支付");
//        }
//        if (!userRecharge.getRechargeType().equals(PayChannelEnum.UNIONPAY.getCode().toLowerCase())) {
//            return R.fail("支付方式不正确,请使用云闪付支付");
//        }
//        AggregatePayDTO aggregatePayDTO = new AggregatePayDTO();
//
//        aggregatePayDTO.setAdviceUrl("https://www.baidu.com");//回调地址
//        aggregatePayDTO.setAmount(userRecharge.getPrice().toString());
//        aggregatePayDTO.setAmount(userRecharge.getPrice().toString());
//        aggregatePayDTO.setSubject("充值");
//        aggregatePayDTO.setDesc("充值");
//        aggregatePayDTO.setMerchantOrderNo(userRecharge.getId().toString());
//        return R.success(aggregatePayService.unionAggrePay(aggregatePayDTO));
//    }
//
//
//
//}
